﻿using Fozzy.Ontology;


using System.Collections.Generic;

namespace Fozzy.Gedcom
{
    /// <summary>
    /// Un Concept ici c'est l'archétype du squelette d'Object : Value, Identifiant, Nom
    /// Ses principales finalités sont :
    /// - La présence d'un Identifier
    /// - l'Export que je mets arbitrairement ici
    /// </summary>
    /// <typeparam name="entity"></typeparam>
    public class Concept<entity>                                        : Fozzy.Concept<entity>
        where entity : IConcept
    {
        #region Declarations
        #endregion

        #region [ States ]
            /// <summary>
            /// Applicativement, 2 OBjects sont égaux si ils ont même Identifiant 
            /// Si pas d'Identifier, base.Equalisation 
            /// </summary>
            /// <param name="other"></param>
            /// <returns></returns>
        #endregion

        #region Properties
        #endregion

        #region Value
            private Integer                     Level                   { get { return new Integer(level.ToString())                ; } }
            public override Fozzy.Name          Name                    { get { return new Name(Level, base.Name)                   ; } }
            private object                      level                   { get { return new _Type(Type).Attribute<XLevel>()          ; } }
        #endregion

        #region [ Constructeur ]
            public Concept()                                    
            {}
            public Concept(entity entity)                               : base(entity)
            { }
            public Concept(File file)                                   : base(file)
            { }
            public Concept(_Element element)                             : base(element)
            { }
            public Concept(string name)                                 : base(name)
            { }
            public Concept(Integer identifier)                          : base(identifier)
            { }

       #endregion

    }
}
